from fastmcp import FastMCP
import asyncio
from fastmcp import Client
mcp = FastMCP('demo.mcp')

@mcp.tool()
def greet(input: str) -> str:
    """
    这是一个测试函数，它接收一个名字并返回一句个性化的问候。

    :param input: 要打招呼的人的名字。这个参数是必需的，并且应该是字符串类型。
    :param title: (假设我们增加一个参数) 称谓，例如先生或女士。
    :result: 返回一句格式化后的完整问候语，例如 "Hello, 技术爱好者"。
    """
    result = f'Hello, {input}'
    return result


async def main():
    client = Client(mcp)
    async with client:
        # 查看可用工具
        tools = await client.list_tools()
        print('可用工具:', tools)
        
        # 调用工具（参数名必须匹配）
        result = await client.call_tool('greet', {'input': '技术爱好者'})
        print('调用结果:', result)

# 这是推荐的、唯一的程序入口点
if __name__ == '__main__':
    asyncio.run(main())
